/**
 * [11] 盛最多水的容器
 * 双指针算法思想：
 * # 面积 = 宽 ✖ 高
 * # 尽量保证宽、高都最长
 * # 摒弃暴力算法中按部就班的指针移动方式
 * # 令两指针一头一尾相隔最远，符合宽最长的期望
 * # 由于指针在向中间移动的过程中宽递减，要想获得更多的面积只能移动“矮指针”
 * # 被排除的情况就是没必要计算的情况，也是算法的优化之处
 * # 每次比较并记录下面积最大值，直至遍历完
 * @format
 * @lc app=leetcode.cn id=11 lang=javascript
 */

// @lc code=start
/**
 * @param {number[]} height
 * @return {number}
 */
// 双指针法
var maxArea = function (height) {
    let [left, right, maxArea, tempArea] = [0, height.length - 1, 0, 0]
    while (left < right) {
        if (height[left] > height[right]) {
            tempArea = (right - left) * height[right]
            right--
        } else {
            tempArea = (right - left) * height[left]
            left++
        }
        maxArea < tempArea ? (maxArea = tempArea) : null
    }
    return maxArea
}

// 暴力算法
var maxArea = function (height) {
    let [maxArea, tempArea] = [0, 0]
    for (let i = 0; i < height.length; i++) {
        for (let j = i + 1; j < height.length; j++) {
            tempArea = (j - i) * (height[i] < height[j] ? height[i] : height[j])
            maxArea < tempArea ? (maxArea = tempArea) : null
        }
    }
    return maxArea
}
// @lc code=end
